#ifndef LOG_H
#define LOG_H

#define CRITICAL_L 1
#define ERROR_L 2
#define WARNING_L 3
#define INFO_L 4
#define DEBUG_L 5


#define LOGC(msg) logCritical(__FILE__, __func__, __LINE__, msg);
#define LOGE(msg) logError(__FILE__, __func__, __LINE__, msg);
#define LOGW(msg) logWarning(__FILE__, __func__, __LINE__, msg);
#define LOGI(msg) logInfo(__FILE__, __func__, __LINE__, msg);
#define LOGD(msg) logDebug(__FILE__, __func__, __LINE__, msg);

void setLogLevel(int level);
void logCritical(const char *fname, const char *funcName, unsigned int line, const char *msg);
void logError(const char *fname, const char *funcName, unsigned int line, const char *msg);
void logWarning(const char *fname, const char *funcName, unsigned int line, const char *msg);
void logInfo(const char *fname, const char *funcName, unsigned int line, const char *msg);
void logDebug(const char *fname, const char *funcName, unsigned int line, const char *msg);

#endif // LOG_H
